const LINE_STYLE = {
  Color: 1, //线颜色
  LinStyleID: 0, //线型号
  LinStyleID2: 1, //线型号
  LinWidth: 0.05, //线宽
  Xscale: 10,
  Yscale: 10,
}

class LineString {
  static add({ position, attr, service, docLayer }) {
    var pointObj = []
    for (let item of position) {
      pointObj.push(new Zondy.Object.Point2D(item[0], item[1]))
    }
    //构成折线的弧段
    var gArc = new Zondy.Object.Arc(pointObj)
    //构成线的折线
    var gAnyLine = new Zondy.Object.AnyLine([gArc])
    //设置线要素的几何信息
    var gline = new Zondy.Object.GLine(gAnyLine)
    //设置要素的几何信息
    var fGeom = new Zondy.Object.FeatureGeometry({ LinGeom: [gline] })
    /* style 图形参数信息 */
    //随机输出1~8之间的整数,作为新添加的要素的颜色号

    //设置添加线要素的图形参数信息
    var clineInfo = new Zondy.Object.CLineInfo(LINE_STYLE)
    //设置要素的图形参数信息
    var graphicInfo = new Zondy.Object.WebGraphicsInfo({
      /* 
        1-Point
        2-LineString
        3-Area
         */
      InfoType: 2,
      LinInfo: clineInfo,
    })
    /* 属性信息 */
    var attValue = attr.map((item) => item.value)

    var newFeature = new Zondy.Object.Feature({
      fGeom: fGeom,
      GraphicInfo: graphicInfo,
      AttValue: attValue,
    })
    //设置要素为线要素
    newFeature.setFType(2)

    /* 2、设置要素集 */
    //创建一个要素数据集
    var featureSet = new Zondy.Object.FeatureSet()
    var fldNumber = attValue.length //属性个数
    /* 默认参数不用映射 */
    var fldName = attr.map((item) => item.name)
    var fldType = attr.map((item) => item.type)
    //创建属性结构设置对象
    var cAttStruct = new Zondy.Object.CAttStruct({
      FldName: fldName,
      FldNumber: fldNumber,
      FldType: fldType,
    })
    //设置要素数据集的树形结构
    featureSet.AttStruct = cAttStruct
    //将添加的线要素添加到属性数据集中
    featureSet.addFeature(newFeature)
    /* 3、调用服务 */

    //创建一个地图编辑对象
    /* 第一个参数  地图文档的名称 第二个参数 要素所在的图层 */
    var editDocFeature = new Zondy.Service.EditDocFeature(
      service.name,
      service.layerId,
      {}
    )
    editDocFeature.add(featureSet, this.onLineSuccess(docLayer))
  }
  static onLineSuccess(docLayer) {
    return function (data) {
      if (data.succeed) {
        alert('添加线要素成功！')
        docLayer.refresh()
      } else {
        alert('添加线要素失败！')
      }
    }
  }
}
